home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-01
/
oleo130s.zip
/
OLEO130S.TAR
/
oleo-1.3
/
args.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-25
|
5KB
|
156 lines
#ifndef ARGSH
#define ARGSH
/* Copyright (C) 1993 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this software; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* t. lord Wed Jan 27 15:46:24 1993 */
/* Interacting with command arguments. */
/* See find_stub. */
enum command_arg_representation
{
cmd_char = 'c',
cmd_float = 'd',
cmd_file = 'f',
cmd_int = 'i',
cmd_key = 'k',
cmd_range = 'r',
cmd_string = 's',
cmd_none = '0'
};
struct command_arg;
/* See comments in arg.c: */
#ifdef __STDC__
typedef char * (*arg_verifier) (char ** end_out, struct command_arg *);
typedef void (*arg_destroyer) (struct command_arg *);
#else
typedef char * (*arg_verifier) ();
typedef void (*arg_destroyer) ();
#endif
/* For every kind of prompt allowed in a FUNC_ARGS string,
* there exists a prompt_style that describes how that
* kind of argument should be editted/passed:
*/
struct prompt_style
{
arg_verifier verify;
arg_destroyer destroy;
enum command_arg_representation representation;
char * keymap;
};
#ifdef __STDC__
extern char * char_verify (char ** end, struct command_arg * arg);
extern char * symbol_verify (char ** end, struct command_arg * arg);
extern char * word_verify (char ** end, struct command_arg * arg);
extern void symbol_destroy (struct command_arg * arg);
extern char * command_verify (char ** end, struct command_arg * arg);
extern char * read_file_verify (char ** end, struct command_arg * arg);
extern void read_file_destroy (struct command_arg * arg);
extern char * write_file_verify (char ** end, struct command_arg * arg);
extern void write_file_destroy (struct command_arg * arg);
extern char * keyseq_verify (char ** end, struct command_arg * arg);
extern char * keymap_verify (char ** end, struct command_arg * arg);
extern char * number_verify (char ** end, struct command_arg * arg);
extern char * double_verify (char ** end, struct command_arg * arg);
extern char * range_verify (char ** end, struct command_arg * arg);
extern char * string_verify (char ** end, struct command_arg * arg);
extern char * yes_verify (char ** end, struct command_arg * arg);
extern char * incremental_cmd_verify (char ** end, struct command_arg * arg);
extern char * menu_verify (char ** end, struct command_arg * arg);
extern char * format_verify (char ** end, struct command_arg * arg);
extern char * noop_verify (char ** end, struct command_arg * arg);
#else
extern char * char_verify ();
extern char * symbol_verify ();
extern char * word_verify ();
extern void symbol_destroy ();
extern char * command_verify ();
extern char * read_file_verify ();
extern void read_file_destroy ();
extern char * write_file_verify ();
extern void write_file_destroy ();
extern char * keyseq_verify ();
extern char * keymap_verify ();
extern char * number_verify ();
extern char * double_verify ();
extern char * range_verify ();
extern char * string_verify ();
extern char * yes_verify ();
extern char * incremental_cmd_verify ();
extern char * menu_verify ();
extern char * format_verify ();
extern char * noop_verify ();
#endif
#ifdef DEFINE_STYLES
#define DEFSTYLE(NAME,VER,DEST,REP,KEYMAP) \
struct prompt_style NAME = \
{ \
VER, \
DEST, \
REP, \
KEYMAP \
}
#else
#define DEFSTYLE(NAME,VER,DEST,REP,KEYMAP) extern struct prompt_style NAME
#endif
DEFSTYLE(char_style, char_verify, 0, cmd_int, "read-char");
DEFSTYLE(double_style, double_verify, 0, cmd_float, "read-float");
DEFSTYLE(menu_style, menu_verify, 0, cmd_int, "read-menu");
DEFSTYLE(format_style, format_verify, 0, cmd_int, "read-format");
DEFSTYLE(symbol_style,
symbol_verify, symbol_destroy, cmd_string, "read-symbol");
DEFSTYLE(word_style,
word_verify, symbol_destroy, cmd_string, "read-word");
DEFSTYLE(command_style,
command_verify, symbol_destroy, cmd_string, "read-symbol");
DEFSTYLE(read_file_style,
read_file_verify, read_file_destroy, cmd_file, "read-filename");
DEFSTYLE(write_file_style,
write_file_verify, write_file_destroy, cmd_file, "read-filename");
DEFSTYLE(keyseq_style, keyseq_verify, 0, cmd_key, "read-keyseq");
DEFSTYLE(keymap_style,
keymap_verify, symbol_destroy, cmd_string, "read-symbol");
DEFSTYLE(number_style, number_verify, 0, cmd_int, "read-integer");
DEFSTYLE(range_style, range_verify, 0, cmd_range, "read-range");
DEFSTYLE(formula_style, string_verify, 0, cmd_string, "read-formula");
DEFSTYLE(string_style, string_verify, 0, cmd_string, "read-string");
DEFSTYLE(file_name_style, string_verify, 0, cmd_string, "read-filename");
DEFSTYLE(yes_style, yes_verify, 0, cmd_none, "read-string");
DEFSTYLE(int_constant_style, 0, 0, cmd_int, 0);
DEFSTYLE(range_constant_style, 0, 0, cmd_range, 0);
DEFSTYLE(inc_cmd_style, incremental_cmd_verify, 0, cmd_none, "direction");
DEFSTYLE(mode_style, noop_verify, 0, cmd_none, 0);
#endif /* ARGSH */